#ifndef NANE_IFILESYSTEM_H
#   define  NANE_IFILESYSTEM_H

#   include "nane/core/ISeekable.h"
#   include "nane/core/ISubSystem.h"
#   include "nane/core/IRefCounted.h"
#   include "nane/core/enum.h"

namespace nane
{


    struct IReadFile
        : public IInputSeekableRef
    {
    };
    
    struct IWriteFile
        : public IOutputSeekableRef
    {
        virtual bool Flush() = 0;
    };
    
    struct IFileSystem
        : public ISubSystem
    {
        virtual IReadFile* OpenReadFile( const char* _filename ) = 0;
        virtual IWriteFile* OpenWriteFile( const char* _filename ) = 0;
        //virtual void CloseFile( IFile* _file ) = 0;
        virtual bool Exists( const char* _filename ) = 0;
        virtual bool DeleteFile( const char* _filename ) = 0;
        virtual bool CreateFolder( const char* _path ) = 0;
        virtual bool DeleteFolder( const char* _path ) = 0;
    };

}   // namespace nane

#endif	// NANE_IFILESYSTEM_H
